﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Pay_My_Server.Connector;
using Pay_My_Server.DB;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using Pay_My_Server.Implements;



namespace Pay_My_Server
{
    static class program
    {
        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // lien le schema linkQ et le code
            ADOConnector adapter = new ADOConnector();

            var users = (adapter.DataContext.User.ToList());

            if (users.Count > 0)
            {
                Console.Out.WriteLine("Il ya des utilisateurs inscrits");
                for (int i = 0; i < users.Count; i++)
                {
                    Console.Out.WriteLine("Utilisateur :" + (i + 1));
                    Console.Out.WriteLine("Nom :" + users[i].nom_user);
                    Console.Out.WriteLine("Solde:" + users[i].solde_user);
                    Console.Out.WriteLine("Est membre bar: " + int2Bool((int)(users[i].estmembre_user)));
                }

            }
            else
            {
                //User_Category cat = new User_Category();
                User user = new User();

                Console.Out.WriteLine("Création d'un nouvel utilisateur");
                user.nom_user = "GERARD";
                user.solde_user = Convert.ToDecimal(0.0);
                user.estmembre_user = 1;

                Console.Out.WriteLine("Nom :" + user.nom_user);
                Console.Out.WriteLine("Solde:" + user.solde_user);
                Console.Out.WriteLine("Est membre bar: " + int2Bool((int)(user.estmembre_user)));
                adapter.DataContext.User.InsertOnSubmit(user);
                adapter.DataContext.SubmitChanges();
                Console.Out.WriteLine("Ajout Utilisateur");
            }


            try
            {
                // Création d'un nouveau canal d'écoute sur le port 1069
                TcpChannel channel = new TcpChannel(1069);
                // Enregistrement du canal
                ChannelServices.RegisterChannel(channel, true);
                // Démarrage de l'écoute en exposant l'objet en Singleton
                RemotingConfiguration.RegisterWellKnownServiceType(
                    typeof(ProdCategory),
                    "RemoteOperation",
                    WellKnownObjectMode.Singleton);

                Console.WriteLine("Le serveur a démarré avec succés");
                Console.ReadLine();
            }
            catch
            {
                Console.WriteLine("Erreur lors du démarrage du serveur");
                Console.ReadLine();
            }

            Console.Out.WriteLine("Appuyer sur une touche pour quitter");
            Console.Read();

        }

        public static bool int2Bool(int convert)
        {
            if (convert == 0 || convert == 1)
                return Convert.ToBoolean(convert);
            else
                return false;
        }

    }
}
